The present invention relates to disk storage devices for computer systems and, more particularly, to disk arrays or RAID (Redundant Arrays of Inexpensive Disks) storage systems.
RAID storage systems have emerged as an alternative to large, expensive disk drives for use within present and future computer system architectures. A RAID storage system includes an array of small, inexpensive hard disk drives, such as the 5 1/4 or 3 1/2 inch disk drives currently used in personal computers and workstations. Although disk array products have been available for several years, significant improvements in the reliability and performance of small disk drives and a decline in the cost of such drives have resulted in the recent enhanced interest in RAID systems.
Numerous disk array design alternatives are possible, incorporating a few to many disk drives. Several array alternatives, each possessing different attributes, benefits and shortcomings, are presented in an article titled "A Case for Redundant Arrays of Inexpensive Disks (RAID)" by David A. Patterson, Garth Gibson and Randy H. Katz; University of California Report No. UCB/CSD 87/391, December 1987. The article, incorporated herein by reference, discusses disk arrays and the improvements in performance, reliability, power consumption and sealability that disk arrays provide in comparison to single large magnetic disks.
RAID level 1, discussed in the article, comprises N disks for storing data and N additional "mirror" disks for storing copies of the information written to the data disks. RAID level 1 write functions require that data be written to two disks, the second "mirror" disk receiving the same information provided to the first disk. When data is read, it can be read from either disk. A RAID level 1 system including four drives is depicted in FIG. 1. The drives are labeled DATA 1, MIRROR 1, DATA 2 and MIRROR 2. The blocks shown below the disk drives illustrate the manner in which data is stored on the disks.
RAID level 1 provides a high level of redundancy, high transaction performance, a minor write penalty and no recovery penalty. Although data availability is very high on RAID level 1 systems, the added expense and loss of available data storage capacity which result from supporting duplicate drives can be improved with RAID level 3 and 5 systems.
RAID level 3 systems comprise one or more groups of N+1 disks. Within each group, N disks are used to store data, and the additional disk is utilized to store parity information. During RAID level 3 write functions, each block of data is divided into N portions for storage among the N data disks. The corresponding parity information is written to a dedicated parity disk. When data is read, all N data disks must be accessed. The parity disk is used to reconstruct information in the event of a disk failure. A RAID level 3 system including five drives is shown in FIG. 2. The disk drives are labeled DATA 1 through DATA 5. Data is striped across disks DATA 1 through DATA 4, each data disk receiving a portion of the data being saved. Parity information, generated through a bit-wise exclusive-OR of the data stored on drives DATA I through DATA 4, is saved on drive DATA 5.
RAID level 3 provides data striping at either the byte or word level, very high data transfer rates and no penalty for write or data recovery operations. RAID level 3 systems provide best overall performance when used for large file transfers such as: decision support imaging, medeling and simulation, intensive graphics and image processing, scientific computing and CAD/CAM applications.
A RAID level 5 system is illustrated in FIG. 3. Level 5 systems are also comprised of one or more groups of N+1 disks. RAID level 5 systems differ from RAID level 3 systems in that data to be saved is divided into larger portions, consisting of one or many blocks of data, for storage among the disks. In addition, although each group contains N+1 disks, each disk includes some blocks for storing data and some blocks for storing parity information, i.e., the parity information is distributed among the N+1 drives rather than saved to a dedicated parity disk drive. RAID level 5 writes require access to at least two disks; however, every write to a group does not require access to the same dedicated parity disk. Each disk includes some blocks for storing parity information. In a similar fashion, read operations typically need only access a single one of the N data disks. As with RAID level 3 systems, the parity data is used to reconstruct information in the event of a disk failure.
RAID level 5 provides data striping by system block size, parity distribution across all drives and improved transaction performance, but carries a significant write penalty. RAID level 5 systems are best utilized for super-computer or transaction processing applications requiring high I/O rates and small block sizes. RAID level 5 systems are ideal for the on-line processing needs of airline and automobile reservation centers, automatic teller and point-of-sale operations, and data base applications.
An additional disk array arrangement, referred to herein as RAID level 0, is depicted in FIG. 4. The array includes N data disks for storing data. Data is striped across the N data disks. The array controller accesses each drive independently, allowing up to N concurrent read or write operations at five different physical locations. This provides transparent load balancing and thus a performance improvement over a single disk drive. There is no parity generation or storage provided with RAID level 0, so there are no data recovery or reconstruction features as are provided with RAID levels 1, 3 and 5.
RAID level 0 provides data striping by system block size, high capacity, high transaction performance and no write penalty, but does not provide data recovery or extended data availability. This RAID level is best utilized for applications which require additional performance, but not the data availability provided by the other RAID levels.
As discussed above, the performance of different computer applications are optimized for different RAID level systems. For example, RAID 1 is best suited for applications requiring high data availability, RAID 3 is best utilized with applications requiring large file transfers, RAID 5 provides optimal performance for applications requiring high I/O rates and small block sizes, and RAID 0 is best suited to applications requiring additional performance, but not the data availability provided by the other RAID levels. Thus for processing systems accommodating multiple applications, an array supporting more than one RAID level concurrently may provide performance benefits over a traditional array configured in conformance with a single RAID level.
A method for partitioning a physical disk array into two or more smaller logical arrays may also be desired as the capacity of small disk drives increase, increasing the capacity of disk arrays beyond operating system or application disk size limitations.